/**
 * @Author 1928
 * @Date 2022/4/20 7：58
 * @Description  方法递归
 */

/**
 * 斐波那契数列递归求第和
 */
public class 练习方法递归 {
    public static int fib(int n){
        if (n == 1){
            return 0;
        }
        if (n == 2){
            return 1;
        }
        int tom = fib(n-1) + fib(n-2);
        return tom;
    }

    public static void main1(String[] args) {
        System.out.println(fib(1));
        System.out.println(fib(2));
        System.out.println(fib(3));
        System.out.println(fib(41));
    }

    /**
     * 输入一个非负整数，返回组成它的数字之和
      * @param n
     * @return
     */
    public static int fun(int n){
        if (n <=9){
            return n;
        }
        int till = n%10 + fun(n/10);
        return till;
    }

    public static void main2(String[] args) {
        System.out.println(fun(1234));
    }

    /**
     * 按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4) （递归）
     * @param n
     */
    public static void smll(int n){
        if (n<=9){
            System.out.println(n);
            return;
        }
        smll(n/10);
        System.out.println(n%10);
    }

    public static void main3(String[] args) {
        smll(1234);
    }

    /**
     * 递归求 1 + 2 + 3 + ... + 10
     * @param n
     * @return
     */
    public static int stem(int n){
        if (n == 1){
            return n;
        }
        int ste = n + stem(n-1);
        return  ste;
    }

    public static void main4(String[] args) {
        System.out.println(stem(10));
    }

    /**
     * 递归求n！
     * @param n
     * @return
     */
    public static int pell(int n) {
        if (n == 1){
            return n;
        }
        int miss = n*pell(n-1);
        return miss;
    }

    /**
     * 输入一个非负整数，返回组成它的数字之和
     * @param args
     */
    public static void main5(String[] args) {
        System.out.println(pell(4));
    }
    public static int munt(int n){
        if (n <= 9){
            return n;
        }
        int ste = munt(n/10) +n%10;
         return ste;
    }

    public static void main(String[] args) {
        System.out.println(munt(12345));
    }
}
